package org.ezplatform.office.forum.service;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.transaction.Transactional;

import org.ezplatform.core.dao.jpa.JpaBaseDao;
import org.ezplatform.core.service.BaseService;
import org.ezplatform.core.web.view.OperationResult;
import org.ezplatform.office.forum.dao.ForumPostLabelDao;
import org.ezplatform.office.forum.entity.ForumPostLabel;
import org.ezplatform.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/** 
* @author 作者: wujs
* @version 创建时间：2018年12月5日 下午7:18:10 
* 类说明 论坛帖子标签关联
*/
@Service
@Transactional
public class ForumPostLabelService  extends BaseService<ForumPostLabel,String>{
	
	@Autowired
	private ForumPostLabelDao forumPostLabelDao;
	
	@Override
	protected JpaBaseDao<ForumPostLabel, String> getEntityDao() {
		return forumPostLabelDao;
	}
	
	
	/**
	 * @param labelId
	 * @param isToggle
	 *            当值=1时:若不存在标签则添加,存在删除; !=1时:不存在标签添加,存在标签不改变(不会多次添加);
	 * @param postIds
	 * @Title: labelPost
	 * @Description: 帖子的标签添加/删除
	 * @return: void
	 * @date 2017年11月24日 下午7:35:15
	 */
	public OperationResult labelPost(String labelId, String isToggle, String[] postIds) {
		if(postIds != null && postIds.length > 0 && StringUtils.isNotBlank(labelId)){
			List<String> postIdList = Arrays.asList(postIds);
			List<String> lpList = forumPostLabelDao.getPostIdByPostLabel(postIdList, labelId);
			List<ForumPostLabel> addList = new ArrayList<ForumPostLabel>();
			ForumPostLabel pl = null;
			for(String postId : postIdList){
				if(!lpList.contains(postId)){
					pl = new ForumPostLabel();
					pl.setPostId(postId);
					pl.setLabelId(labelId);
					addList.add(pl);
				}
			}
			if(addList != null && !addList.isEmpty()){
				this.save(addList);
			}
			if("0".equals(isToggle)){
				if(lpList != null && !lpList.isEmpty()){
					forumPostLabelDao.delByPostLabel(lpList, labelId);
				}
			}
		}
		Map resources = new HashMap();
    	//国际化资源
		resources.put("i18NCode", "oa.forum.marksuc");
		return OperationResult.buildSuccessResult("标记操作已处理完成",resources);
	}
	
	
	/**
	 * 移动端标签的管理
	 * @param labelId
	 * @param isToggle
	 * @param postIds
	 * @return
	 */
	public OperationResult editPostLabel(String postId,List<String> labelIdList) {
		//先把所有的标签删除
		forumPostLabelDao.delByPost(postId);
		//然后添加
		if(labelIdList != null && !labelIdList.isEmpty()){
			List<ForumPostLabel> list = new ArrayList<ForumPostLabel>();
			ForumPostLabel pl = null;
			for(String labelId : labelIdList){
				pl = new ForumPostLabel();
				pl.setLabelId(labelId);
				pl.setPostId(postId);
				list.add(pl);
			}
			this.save(list);
		}
		return OperationResult.buildSuccessResult("数据处理完成");
	}
}
